package com.bestcem.xm.txtanls.dao.mapper;

import com.bestcem.xm.txtanls.entity.mysql.ProjectFieldEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 项目字段
 *
 * @author qiongyu.cui <qiongyu.cui@idiaoyan.com>
 * @version v1.0
 * @date 2021/9/27 15:02
 */
@Mapper
public interface ProjectFieldMapper {

    /**
     * 查询项目字段id
     *
     * @param projectId 项目id
     * @param type      类型 0
     * @return List<String> 对应的文本字段id
     * @author jy.zhao
     * @date 2021/9/27 16:57
     **/
    List<ProjectFieldEntity> listProjectField(@Param("projectId") String projectId, @Param("type") Integer type);

    /**
     * 根据fieldId修改fieldName
     *
     * @param fieldId   训练字段id
     * @param fieldName 训练字段名称
     * @return 修改成功条数
     */
    int updateFieldNameByFieldId(@Param("fieldId") String fieldId, @Param("fieldName") String fieldName);

    /**
     * 根据projectId和type获取fieldIdList
     *
     * @param projectId 项目id
     * @param type      类型 0 时间字段类型 1 文本字段类型
     * @return fieldIdList
     */
    List<String> listFiledIdsByProjectIdAndType(@Param("projectId") String projectId, @Param("type") Integer type);

    /**
     * 根据projectId和类型 删除记录
     *
     * @param projectId 项目id
     * @param type      类型 0 时间字段类型 1 文本字段类型
     * @return 删除成功条数
     */
    Integer deleteByProjectIdAndType(@Param("projectId") String projectId, @Param("type") Integer type);

    /**
     * 批量插入
     *
     * @param projectFieldEntityList 文本分析项目训练扩展字段list
     * @return 插入成功条数
     */
    Integer insertFields(@Param("projectFieldEntityList") List<ProjectFieldEntity> projectFieldEntityList);

    /**
     * 根据fieldId获取projectId
     *
     * @param fieldId 字段id
     * @return 项目id
     */
    List<String> listProjectIdsByFieldId(@Param("fieldId") String fieldId);

    /**
     * 插入项目字段信息
     *
     * @param projectFieldEntity 项目字段信息实体
     * @return int 插入的条数
     * @author cuiqiongyu <qiongyu.cui@idiaoyan.cn>
     * @date 2021/09/29 17:41
     */
    int insert(ProjectFieldEntity projectFieldEntity);


    void updateProjectFieldOffset(@Param("projectId") String projectId, @Param("fieldId") String fieldId, @Param("offset") int offset);
}
